「Unity」2DTileMap 您所在的位置:网站首页 unity 图片 「Unity」2DTileMap

「Unity」2DTileMap

2023-05-07 09:11| 来源: 网络整理| 查看: 265

大家好,这里是秋野

这篇文章继续上一篇的内容

↓↓↓↓↓上一篇在这里↓↓↓↓↓

现在咱们要实现的功能就是标题所说的「切换瓦片」了

其实到上一篇的时候也就到了临门一脚的程度

切换的时候只需要获取BaseLayer的Sprite输入到字典中

寻找是否有其他变体,然后进行替换即可

在Update()添加段代码去通过鼠标中键测试这个功能

看得出来已经初步完成了这个功能

但是出现了在旁边放置新Tile的时候会被刷新成原来的Tile

那么我们就需要在刷新附近Tile的方法中增加一段判断

那么这个功能算是基本说讲解完了

接下来拓展功能

「让斜边连贯起来」

首先是要对一些特定的规则的Tile标记起来

比如这种

上面这类Tile主要是构成咱们的转角和内转角的Tile

转角通常只有一个

而内转角最多可达四个

这就是我们需要保存的内容

「是否为转角」

「转角朝向」

「是否有内转角,有多少个,分别方向是什么」

这里咱们分别用bool和Vector3Int和一个List来储存上面的信息

虽然其实可以直接用Vector3储存的信息是否为(0,0,0)来判断是否为转角,从而省去这个bool

但为了可读性(懒)还是继续这样吧

直接在TilingUnit基础上增加代码

这里保存的都用private是为了避免后面操作的时候不小心给改了

在之前第一版的时候就出现了这类的操作导致找了半天bug

然后这类数据也不太可能让人去一个一个找

当然也是交给程序去自动生成这些

首先我们要找一些RuleTile的规则规律

虽然不一定是绝对的,但我自己这样定规则的时候是正确能显示的

首先是转角处的瓦片的规则

左上转角左上转角和右下内转角

可以发现这类转角的Tile都是5个规则就能去定义它

而且都会呈现

上下左右都有规则定义

只有一个四角的规则定义

位于四角的规则的反方向就是拐角方向

当然还有一个规律就是位于上下左右的两个「NotThis」的方向相加就等于拐角方向

程序寻找逻辑具体用哪个就根据自己喜好吧

另外内转角的规律是什么呢

我们看回上面那张右下带内转角的四角方向会发现那个地方的规则是「NotThis」

再找几个例子来看看

会发现确实如此

四角方向带有规则且为「NotThis」的均有内转角

且内转角数量与方向等同于位于四角方向的「NotThis」的数量与方向

有点绕,我自己写出来的都觉得绕

但道理就是那么个道理

那么我们就来继续修改咱们的生成器

首先咱们添加三个方法

然后再修改之前的CreateTilingUnits()

然后我们再让ruletile文件跑一遍

就会得到这样的效果了

与上面对于的TilingRule

那么我们标记了这些有什么用捏?

这时就得说说第三层TileMap了

咱们要在第三层TileMap叠上一个遮盖住凹陷区域的Tile

那么我们就需要知道凹陷区域的方向与数量

然后在下面这些sprite里面选择对应的Tile

此图一个Tile为24*24像素

比如下面红色这个已经切换斜边的时候就要通知蓝色的两个位置的第三层Tilemap去添加一个

这样的Tile去覆盖上去以达到平滑过渡的效果

那么机智的朋友就会发现了

这个新的Tile咱们也是需要去保存他的

同样的也保存在咱们魔改的RuleTile当中

那么这个时候就能去手动保存这些内容了

但很明显咱们不会那么麻烦

很不优雅

而具体的生成代码与最终实现将在下篇继续

如果感兴趣或者获得了帮助

请求来个一键三连

如果内容有误或者建议也欢迎指出



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有